package com.ywjt.platformbusiness.util;

import android.content.Context;
import android.graphics.Color;
import android.util.Log;

import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.listener.OnDismissListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectChangeListener;
import com.bigkoo.pickerview.listener.OnOptionsSelectListener;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.ywjt.platformbusiness.R;
import com.ywjt.platformbusiness.my.model.CitysBean;

import java.util.ArrayList;
import java.util.List;


public class CitySelectUtils {
    private CityCallBack cityCallBack;
    private List<String> options1Items = new ArrayList();
    private List<ArrayList<String>> options2Items = new ArrayList();
    private List<ArrayList<ArrayList<String>>> options3Items = new ArrayList();
    private Context context;
    private CitysBean citysBean;

    public CitySelectUtils(Context context, CitysBean citysBean) {
        this.context = context;
        this.citysBean=citysBean;

        for (int i = 0; i < citysBean.getCity().size(); i++) {//遍历省份
            options1Items.add(citysBean.getCity().get(i).getAddress());
            ArrayList<String> CityList = new ArrayList<>();//该省的城市列表（第二级）
            ArrayList<ArrayList<String>> Province_AreaList = new ArrayList<>();//该省的所有地区列表（第三极）

            for (int j = 0; j < citysBean.getCity().get(i).getCity().size(); j++) {//遍历该省份的所有城市
                String CityName = citysBean.getCity().get(i).getCity().get(j).getAddress();
                CityList.add(CityName);//添加城市
                Log.d("信息1", CityName);
                ArrayList<String> City_AreaList = new ArrayList<>();//该城市的所有地区列表

                for (int d = 0; d < citysBean.getCity().get(i).getCity().get(j).getCity().size(); d++) {//该城市对应地区所有数据
                    String AreaName = citysBean.getCity().get(i).getCity().get(j).getCity().get(d).getAddress();

                    City_AreaList.add(AreaName);//添加该城市所有地区数据
                }
                Province_AreaList.add(City_AreaList);//添加该省所有地区数据
            }

            //添加城市数据
            options2Items.add(CityList);
            //添加地区数据
            options3Items.add(Province_AreaList);
        }
//
        OptionsPickerView pvOptions = new OptionsPickerBuilder(context, onOptionsSelectListener).setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
            @Override
            public void onOptionsSelectChanged(int options1, int options2, int options3) {

            }
        })
                .setSubmitText("确定")//确定按钮文字
                .setCancelText("取消")//取消按钮文字
                //.setTitleText("省市区选择")//标题
                .setSubCalSize(15)//确定和取消文字大小
                .setTitleSize(15)//标题文字大小
                //.setTitleColor(Color.parseColor("#FD780F"))//标题文字颜色
                .setSubmitColor(Color.parseColor("#FF333333"))//确定按钮文字颜色
                .setCancelColor(Color.parseColor("#ff333333"))//取消按钮文字颜色
                .setTitleBgColor(Color.WHITE)//标题背景颜色
                .setBgColor(Color.WHITE)//滚轮背景颜色
                .setContentTextSize(16)//滚轮文字大小
                .setLabels("", "", "")//设置选择的三级单位
                .isCenterLabel(false) //是否只显示中间选中项的label文字，false则每项item全部都带有label。
                .setCyclic(false, false, false)//循环与否
                .setSelectOptions(0, 0, 0)  //设置默认选中项
                .setOutSideCancelable(true)//点击外部dismiss default true
                .setTextColorCenter(context.getResources().getColor(R.color.gray3))//设置选中文本的颜色值
                .isDialog(false)//是否显示为对话框样式
                .isRestoreItem(true)//切换时是否还原，设置默认选中第一项。
                .setLineSpacingMultiplier(2.8f)//行间距
                .build();

        pvOptions.setPicker(options1Items, options2Items, options3Items);//添加数据源
        pvOptions.setOnDismissListener(new OnDismissListener() {
            @Override
            public void onDismiss(Object o) {
                cityCallBack.cancle();
            }
        });
        pvOptions.show();
    }

    private OnOptionsSelectListener onOptionsSelectListener = (options1, option2, options3, v) -> {
        //返回的分别是三个级别的选中位置
        cityCallBack.city(options1Items.get(options1),options2Items.get(options1).get(option2),options3Items.get(options1).get(option2).get(options3));
    };

    public interface CityCallBack {
        void city(String province, String city, String county);
        void cancle();
    }

    public void setCityCallBack(CityCallBack cityCallBack) {
        this.cityCallBack = cityCallBack;
    }
}
